﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;
using DevExpress.XtraEditors.Controls;
using System.Collections;

namespace QuanLyKhachSan.Kho
{
    public partial class frmNhapKho : DevExpress.XtraEditors.XtraForm
    {
        DataClassesKhachSanDataContext dc = new DataClassesKhachSanDataContext(SystemInfo.pub_ConnString);

        static DataTable dtChiTietNhap;


        bool bAdd = true;


        public frmNhapKho()
        {
            InitializeComponent();
        }




        // sự kiện tải form
        private void frmNhapKho_Load(object sender, EventArgs e)
        {
            this.setTable_ChiTietNhap();
            this.fillList_PhieuNhap();
            this.fillList_LoaiDoiTuong();
            this.fillList_Kho();
            this.setOriginalState();           
        }





        // hàm tạo bảng tạm Chi tiết nhập
        private void setTable_ChiTietNhap()
        {
            if (dtChiTietNhap == null)
            {
                dtChiTietNhap = new DataTable();
                dtChiTietNhap.Columns.Add("DT_ID", typeof(Int32));          // ID đối tượng
                dtChiTietNhap.Columns.Add("DT_TEN", typeof(String));        // tên đối tượng
                dtChiTietNhap.Columns.Add("CTN_SL", typeof(Int32));         // số lượng nhập
                dtChiTietNhap.Columns.Add("CTN_DONGIA", typeof(Decimal));   // đơn giá nhập
            }
            else
            {
                dtChiTietNhap.Clear();
            }
        }






        // hàm tải danh sách phiếu nhập
        private void fillList_PhieuNhap()
        {
            DataClassesKhachSanDataContext dc1 = new DataClassesKhachSanDataContext(SystemInfo.pub_ConnString);
            var phieuNhapKho = from pn in dc1.PHIEU_NHAP_KHOs
                               where pn.Nhap_DK == false
                               orderby pn.PNK_ID descending select pn;
            gcPhieuNhapKho.DataSource = phieuNhapKho;

            gvChiTietNhap.MoveLast();
            gvChiTietNhap.MoveFirst();
        }







        // hàm tải danh sách loại nhập kho
        private void fillList_LoaiDoiTuong()
        {
            var loai = from l in dc.LOAI_DOI_TUONGs select l;
            lueLoai.Properties.DataSource = loai;
            lueLoai.Properties.DisplayMember = "L_TEN";
            lueLoai.Properties.ValueMember = "L_ID";

            if (loai != null)
            {
                lueLoai.ItemIndex = 0;
            }

        }







        // hàm tải danh sách kho
        private void fillList_Kho()
        {
            var kho = from k in dc.KHOs select k;
            lueKho.Properties.DataSource = kho;
            lueKho.Properties.DisplayMember = "K_TEN";
            lueKho.Properties.ValueMember = "K_ID";

            lueKhoInGrid.Properties.DataSource = kho;
            lueKhoInGrid.Properties.DisplayMember = "K_TEN";
            lueKhoInGrid.Properties.ValueMember = "K_ID";
        }





        // hàm tải danh sách đối tượng dựa vào loại nhập kho
        // cơ bản có 2 loại nhập ko là Trang thiết bị và Thức uống thức ăn nhanh
        private void fillList_DoiTuong(int iLoaiDoiTuongID)
        {
            var doiTuong = from dt in dc.DOI_TUONGs where dt.L_ID == iLoaiDoiTuongID select dt;
            lueDoiTuong.Properties.DataSource = doiTuong;
            lueDoiTuong.Properties.DisplayMember = "DT_TEN";
            lueDoiTuong.Properties.ValueMember = "DT_ID";
        }






        // hàm tải danh sách chi tiết nhập
        private void fillList_ChiTietNhap(int iMaPhieuNhap)
        {
            //var chiTietNhap = from ctn in dc.CHI_TIET_NHAPs where ctn.PNK_ID == iMaPhieuNhap select ctn;
            //gcChiTietNhap.DataSource = chiTietNhap;

            var chiTietNhap = (from ctn in dc.CHI_TIET_NHAPs where ctn.PNK_ID == iMaPhieuNhap select ctn).ToList();
            foreach (CHI_TIET_NHAP ctn in chiTietNhap)
            {
                DataRow dr = dtChiTietNhap.NewRow();
                dr[0] = ctn.DT_ID;
                dr[1] = ctn.DOI_TUONG.DT_TEN;
                dr[2] = ctn.CTN_SL;
                dr[3] = ctn.CTN_DONGIA;
                dtChiTietNhap.Rows.Add(dr);

                //dtChiTietNhap.Columns.Add("DT_ID", typeof(Int32));          // ID đối tượng
                //dtChiTietNhap.Columns.Add("DT_TEN", typeof(String));        // tên đối tượng
                //dtChiTietNhap.Columns.Add("CTN_SL", typeof(Int32));         // số lượng nhập
                //dtChiTietNhap.Columns.Add("CTN_DONGIA", typeof(Decimal));   // đơn giá nhập
            }
            gcChiTietNhap.DataSource = dtChiTietNhap;
        }






        // hàm lấy thông tin chi tiết của một phiếu nhập
        private void get_PhieuNhap(int iMaPhieuNhap)
        {
            var phieuNhap = (from pn in dc.PHIEU_NHAP_KHOs where pn.PNK_ID == iMaPhieuNhap select pn).Single();
            
        }




        private void show_TongTien()
        {
            decimal dTongTien = 0;
            if (dtChiTietNhap.Rows.Count > 0)
            {

                foreach (DataRow dr in dtChiTietNhap.Rows)
                {
                    //MessageBox.Show(Convert.ToInt32(dr[2]).ToString());
                    dTongTien += (Convert.ToInt32(dr[2]) * Convert.ToDecimal(dr[3]));
                }

            }
            txtTongTien.Text = Convert.ToString(dTongTien);
        }




        // hàm ràng buộc dữ liệu nhập kho
        private bool validate_NhapKho()
        {
            dxErrorProvider1.ClearErrors();

            if (txtMaPhieu.Text == "")
            {
                txtMaPhieu.Focus();
                dxErrorProvider1.SetError(txtMaPhieu, "Vui lòng nhập mã phiếu nhập");
                return false;
            }
            else
            {
                if (bAdd == true)
                {
                    if(txtMaPhieu.Text.Contains(" "))
                    {
                        txtMaPhieu.Focus();
                        dxErrorProvider1.SetError(txtMaPhieu, "Mã phiếu nhập không được có cách khoảng");
                        return false;
                    }
                    else
                    {
                        var phieuNhapKho = from pn in dc.PHIEU_NHAP_KHOs where pn.MS_PHIEU_NHAP == txtMaPhieu.Text.ToString() select pn;
                        if (phieuNhapKho.Count() > 0)
                        {
                            txtMaPhieu.Focus();
                            dxErrorProvider1.SetError(txtMaPhieu, "Mã phiếu nhập này đã có rồi, vui lòng nhập mã khác");
                            return false;
                        }
                    }
                }
            }

            if(lueLoai.ItemIndex < 0)
            {
                lueLoai.Focus();
                dxErrorProvider1.SetError(lueLoai, "Vui lòng chọn loại nhập kho");
                return false;
            }
            if (lueKho.ItemIndex < 0)
            {
                lueKho.Focus();
                dxErrorProvider1.SetError(lueLoai, "Vui lòng chọn kho");
                return false;
            }
            if (dateNgayNhap.EditValue == null)
            {
                dateNgayNhap.Focus();
                dxErrorProvider1.SetError(dateNgayNhap, "Vui lòng điền ngày nhập");
                return false;
            }
            if (dateNgayThanhToan.EditValue == null)
            {
                dateNgayThanhToan.Focus();
                dxErrorProvider1.SetError(dateNgayThanhToan, "Vui lòng điền ngày thanh toán");
                return false;
            }
            if(txtNguoiGiao.Text == "")
            {
                txtNguoiGiao.Focus();
                dxErrorProvider1.SetError(txtNguoiGiao, "Vui lòng nhập Người giao");
                return false;
            }
            if (dtChiTietNhap.Rows.Count == 0)
            {
                lueDoiTuong.Focus();
                dxErrorProvider1.SetError(lueDoiTuong, "Vui lòng chọn đối tượng nhập kho");
                return false;
            }
            return true;
        }




        // hàm thiết lập trạng thái ban đầu cho form
        private void setOriginalState()
        {
            dxErrorProvider1.ClearErrors();
            btThem.Enabled = true;
            btXoa.Enabled = true;
            btSua.Enabled = true;
            btLuu.Enabled = false;
            btHuy.Enabled = false;

            lueKho.Enabled = false;
            txtMaPhieu.Enabled = false;


            gcPhieuNhapKho.Enabled = true;
            groupChiTietNhap.Enabled = false;
            groupThongTinPhieuNhap.Enabled = false;
        }







        // sự kiện nhấn nút thêm
        private void btThem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            // đổi trạng thái là thêm
            bAdd = true;
            btThem.Enabled = false;
            btXoa.Enabled = false;
            btSua.Enabled = false;
            btLuu.Enabled = true;
            btHuy.Enabled = true;
            gcPhieuNhapKho.Enabled = false;
            groupThongTinPhieuNhap.Enabled = true;
            groupChiTietNhap.Enabled = true;
            this.setTable_ChiTietNhap();

            txtMaPhieu.Enabled = true;
            txtMaPhieu.Text = "";
            txtSoLuong.Text = "";
            txtDonGia.Text = "";

            lueLoai.Enabled = true;
            lueLoai.ItemIndex = 0;
            lueKho.ItemIndex = 0;
            txtNguoiNhap.Text = SystemInfo.pub_AppUserFullName;
            txtNguoiGiao.Text = "";
            dateNgayNhap.DateTime = DateTime.Today;
            dateNgayThanhToan.DateTime = DateTime.Today;
        }





        // sự kiện nhấn nút Xóa
        private void btXoa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            int iRowHandle = gvPhieuNhapKho.FocusedRowHandle;
            if (iRowHandle >= 0)
            {
                DialogResult dConfirm = XtraMessageBox.Show("Bạn có chắc muốn xóa phiếu nhập: \""+gvPhieuNhapKho.GetRowCellValue(iRowHandle, gclMaPhieuNhap).ToString()+"\" ?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dConfirm == DialogResult.Yes)
                {
                    int iPhieuNhapID =Convert.ToInt32( gvPhieuNhapKho.GetRowCellValue(iRowHandle, gclPhieuNhapID));
                    var phieuNhapKho = (from pnk in dc.PHIEU_NHAP_KHOs where pnk.PNK_ID == iPhieuNhapID select pnk).Single();
                    dc.PHIEU_NHAP_KHOs.DeleteOnSubmit(phieuNhapKho);

                    dc.SubmitChanges();
                    this.fillList_PhieuNhap();
                    MessageBox.Show("Xóa thành công");
                }
            }
            else
            {
                XtraMessageBox.Show("Vui lòng chọn một phiếu nhập để xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }






        // sự kiện nhấn nút sửa
        private void btSua_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            int iRowHandle = gvPhieuNhapKho.FocusedRowHandle;
            if (iRowHandle >= 0)
            {
                // đổi trạng thái thành lưu
                bAdd = false;
                btThem.Enabled = false;
                btXoa.Enabled = false;
                btSua.Enabled = false;
                btLuu.Enabled = true;
                btHuy.Enabled = true;

                lueKho.Enabled = false;
                txtMaPhieu.Enabled = false;

                gcPhieuNhapKho.Enabled = false;
                groupThongTinPhieuNhap.Enabled = true;
                groupChiTietNhap.Enabled = true;
            }
            else
            {
                XtraMessageBox.Show("Vui lòng chọn một phiếu nhập để sửa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }





        // sự kiện nhấn nút Lưu
        private void btLuu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (this.validate_NhapKho())
            {
                if (bAdd == true)
                {
                    KHO kho = (from k in dc.KHOs where k.K_ID == int.Parse(lueKho.EditValue.ToString()) select k).Single();
                    NHAN_VIEN nhanVien = (from nv in dc.NHAN_VIENs where nv.NV_ID == SystemInfo.pub_NV_ID select nv).Single();


                    // khởi tạo đối tượng phiếu nhập
                    PHIEU_NHAP_KHO phieuNhapKho = new PHIEU_NHAP_KHO();

                    // mã phiếu nhập
                    phieuNhapKho.MS_PHIEU_NHAP = txtMaPhieu.Text;

                    // mã kho
                    phieuNhapKho.KHO = kho;

                    // mã nhân viên
                    phieuNhapKho.NHAN_VIEN = nhanVien;

                    // người giao
                    phieuNhapKho.NGUOI_GIAO = txtNguoiGiao.Text;

                    // ngày nhập kho
                    phieuNhapKho.NGAY_NHAP_KHO = dateNgayNhap.DateTime;
                    phieuNhapKho.Nhap_DK = false;
                    // ngày thanh toán
                    phieuNhapKho.NGAY_THANH_TOAN = dateNgayThanhToan.DateTime;

                    // trạng thái đã thanh toán hay chưa
                    if (cDaThanhToan.Checked == true)
                    {
                        phieuNhapKho.DA_THANH_TOAN = true;
                    }
                    else
                    {
                        phieuNhapKho.DA_THANH_TOAN = false;
                    }

                    dc.PHIEU_NHAP_KHOs.InsertOnSubmit(phieuNhapKho);

                    // mỗi dòng trên Grid Chi tiết nhập thì khởi tạo đối tượng CHI_TIET_NHAP
                    // và lưu vào CSDL
                    foreach (DataRow dr in dtChiTietNhap.Rows)
                    {
                        CHI_TIET_NHAP chiTietNhap = new CHI_TIET_NHAP();
                        chiTietNhap.PHIEU_NHAP_KHO = phieuNhapKho;
                        chiTietNhap.DT_ID = Convert.ToInt32(dr[0].ToString());
                        chiTietNhap.CTN_SL = Convert.ToInt32(dr[2].ToString());
                        chiTietNhap.CTN_DONGIA = Convert.ToDecimal(dr[3].ToString());

                        dc.CHI_TIET_NHAPs.InsertOnSubmit(chiTietNhap);
                    }

                    dc.SubmitChanges();

                    this.setTable_ChiTietNhap();
                    this.fillList_PhieuNhap();
                    XtraMessageBox.Show("Thêm phiếu nhập thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    KHO kho = (from k in dc.KHOs where k.K_ID == int.Parse(lueKho.EditValue.ToString()) select k).Single();
                    NHAN_VIEN nhanVien = (from nv in dc.NHAN_VIENs where nv.NV_ID == SystemInfo.pub_NV_ID select nv).Single();


                    // khởi tạo đối tượng phiếu nhập
                    var phieuNhapKho = (from pnk in dc.PHIEU_NHAP_KHOs where pnk.MS_PHIEU_NHAP == txtMaPhieu.Text select pnk).Single();


                    // mã phiếu nhập
                    //phieuNhapKho.MS_PHIEU_NHAP = txtMaPhieu.Text;

                    // mã kho
                    phieuNhapKho.KHO = kho;

                    // mã nhân viên
                    phieuNhapKho.NHAN_VIEN = nhanVien;

                    // người giao
                    phieuNhapKho.NGUOI_GIAO = txtNguoiGiao.Text;

                    // ngày nhập kho
                    phieuNhapKho.NGAY_NHAP_KHO = dateNgayNhap.DateTime;

                    // ngày thanh toán
                    phieuNhapKho.NGAY_THANH_TOAN = dateNgayThanhToan.DateTime;
                   

                    // trạng thái đã thanh toán hay chưa
                    if (cDaThanhToan.Checked == true)
                    {
                        phieuNhapKho.DA_THANH_TOAN = true;
                    }
                    else
                    {
                        phieuNhapKho.DA_THANH_TOAN = false;
                    }


                    // xóa tất cả chi tiết nhập kho cũ 
                    var danhSachChiTietNhap = from ctn in dc.CHI_TIET_NHAPs where ctn.PHIEU_NHAP_KHO.MS_PHIEU_NHAP == txtMaPhieu.Text select ctn;
                    dc.CHI_TIET_NHAPs.DeleteAllOnSubmit(danhSachChiTietNhap);



                    // mỗi dòng trên Grid Chi tiết nhập thì khởi tạo đối tượng CHI_TIET_NHAP
                    // và lưu vào CSDL
                    foreach (DataRow dr in dtChiTietNhap.Rows)
                    {
                        CHI_TIET_NHAP chiTietNhap = new CHI_TIET_NHAP();
                        chiTietNhap.PHIEU_NHAP_KHO = phieuNhapKho;
                        chiTietNhap.DT_ID = Convert.ToInt32(dr[0].ToString());
                        chiTietNhap.CTN_SL = Convert.ToInt32(dr[2].ToString());
                        chiTietNhap.CTN_DONGIA = Convert.ToDecimal(dr[3].ToString());

                        dc.CHI_TIET_NHAPs.InsertOnSubmit(chiTietNhap);
                    }


                    dc.SubmitChanges();                    
                    this.fillList_PhieuNhap();
                    XtraMessageBox.Show("Sửa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
            }
        }



        // sự kiện nhấn nút hủy
        private void btHuy_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {            
            this.setOriginalState();
            this.fillList_PhieuNhap();
        }





        // sự kiện nhấn chọn trên danh sách phiếu nhập kho
        private void gvPhieuNhapKho_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            if (e.FocusedRowHandle >= 0)
            {
                bAdd = false;

                this.setTable_ChiTietNhap();

                // tải phiếu nhập kho
                PHIEU_NHAP_KHO phieuNhap = (PHIEU_NHAP_KHO)gvPhieuNhapKho.GetRow(e.FocusedRowHandle);



                // tải danh sách đối tượng của phiếu nhập
                this.fillList_ChiTietNhap(phieuNhap.PNK_ID);


                // hiển thị tông tiền của phiếu nhập
                this.show_TongTien();


                // hiển thị dữ liệu lên các control            
                // mã phiếu
                txtMaPhieu.Text = phieuNhap.MS_PHIEU_NHAP;


                // Loại đối tượng nhập kho
                lueLoai.EditValue = ((CHI_TIET_NHAP)phieuNhap.CHI_TIET_NHAPs.First()).DOI_TUONG.L_ID;

                // kho
                lueKho.EditValue = phieuNhap.KHO.K_ID;

                // người nhập
                txtNguoiNhap.Text = phieuNhap.NHAN_VIEN.NV_TEN;

                // người giao
                txtNguoiGiao.Text = phieuNhap.NGUOI_GIAO;

                // ngày nhập
                dateNgayNhap.DateTime = phieuNhap.NGAY_NHAP_KHO;

                // ngày thanh toán
                dateNgayThanhToan.DateTime = DateTime .Parse ( phieuNhap.NGAY_THANH_TOAN.ToString ());
             
                // trạng thái đã thanh toán
                cDaThanhToan.Checked = bool .Parse ( phieuNhap.DA_THANH_TOAN.ToString ());


            }
        }





        // sự kiện chọn trên danh sách loại đối tượng nhập kho
        private void lueLoai_EditValueChanged(object sender, EventArgs e)
        {
            // mỗi lần chọn loại thì xóa danh sách chi tiết nhập hàng
            this.fillList_ChiTietNhap(0);
            this.fillList_DoiTuong(int.Parse(lueLoai.EditValue.ToString()));
            
        }





        

        private void gvChiTietNhap_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {
            int iNewValue;

            // kiểm tra đối tượng
            if (gvChiTietNhap.FocusedColumn == gclTenDoiTuong)
            {
                if (e.Value != null)
                {
                    iNewValue = Convert.ToInt32(e.Value);
                    for (int i = 0; i < gvChiTietNhap.RowCount; i++)
                    {
                        int OldValue = (int)gvChiTietNhap.GetRowCellValue(i, gclTenDoiTuong);
                        if (OldValue == iNewValue)
                        {
                            e.Valid = false;
                            e.ErrorText = "Đối tượng này đã có rồi! vui lòng chọn đối tượng khác";

                            break;
                        }
                    }
                }
                else
                {
                    e.Valid = false;
                    e.ErrorText = "Vui lòng chọn đối tượng";
                }
            }

            // kiểm tra số lượng
            if (gvChiTietNhap.FocusedColumn == gclSoLuong)
            {
                iNewValue = Convert.ToInt32(e.Value);
                if (iNewValue <= 0)
                {
                    e.Valid = false;
                    e.ErrorText = "Vui lòng nhập số lượng";
                }
            }
            // kiểm tra đơn giá
            if (gvChiTietNhap.FocusedColumn == gclDonGia)
            {
                iNewValue = Convert.ToInt32(e.Value);
                if (iNewValue <= 0)
                {
                    e.Valid = false;
                    e.ErrorText = "Vui lòng nhập đơn giá";
                }
            }
        }




        private void gvChiTietNhap_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {

            int iDoiTuong = Convert.ToInt32(gvChiTietNhap.GetRowCellValue(e.RowHandle, gclTenDoiTuong));
            int iSoLuong = Convert.ToInt32(gvChiTietNhap.GetRowCellValue(e.RowHandle, gclSoLuong));
            int iDonGia = Convert.ToInt32( gvChiTietNhap.GetRowCellValue(e.RowHandle, gclDonGia));


            // kiểm tra đối tượng
            if (iDoiTuong <= 0)
            {
                e.Valid = false;
                gvChiTietNhap.SetColumnError(gclTenDoiTuong, "Vui lòng chọn đối tượng");
            }
            else
            {
                for (int i = 0; i < gvChiTietNhap.RowCount; i++)
                {
                    int iOldDoiTuong = (int)gvChiTietNhap.GetRowCellValue(i, gclTenDoiTuong);
                    if (iOldDoiTuong == iDoiTuong)
                    {
                        e.Valid = false;
                        gvChiTietNhap.SetColumnError(gclTenDoiTuong, "Đối tượng này đã có rồi! vui lòng chọn đối tượng khác");
                        break;
                    }
                }
            }

            // kiểm tra  số lượng
            if (iSoLuong <= 0)
            {
                e.Valid = false;
                gvChiTietNhap.SetColumnError(gclSoLuong, "Vui lòng nhập số lượng");
            }

            // kiểm tra  đơn giá
            if (iDonGia <= 0)
            {
                e.Valid = false;
                gvChiTietNhap.SetColumnError(gclDonGia, "Vui lòng nhập số lượng");
            }
        }



        private void gvChiTietNhap_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
        {
            e.ExceptionMode = ExceptionMode.NoAction;
        }


        private void gvChiTietNhap_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.DisplayError;
        }






        // hàm ràng buộc chi tiết nhập
        private bool validate_ChiTietNhap()
        {
            dxErrorProvider1.ClearErrors();
            if (lueDoiTuong.Text == "")
            {
                lueDoiTuong.Focus();
                dxErrorProvider1.SetError(lueDoiTuong, "Vui lòng chọn đối tượng");
                return false;
            }
            else
            {
                if (lueDoiTuong.EditValue == null )
                {
                    lueDoiTuong.Focus();
                    dxErrorProvider1.SetError(lueDoiTuong, "Vui lòng chọn đối tượng");
                    return false;
                }
                else
                {                   
                    // kiểm tra chương trình đào tạo và tháng đã có rồi hay chưa
                    if (dtChiTietNhap.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dtChiTietNhap.Rows)
                        {
                            if (dr[0].ToString() == lueDoiTuong.EditValue.ToString())
                            {
                                lueDoiTuong.Focus();
                                dxErrorProvider1.SetError(lueDoiTuong, "Đối tượng này đã có rồi, vui lòng chọn đối tượng khác");
                                return false;
                            }
                        }
                    }
                }
            }
            if (txtDonGia.Text != "")
            {
                if (Convert.ToInt32(txtDonGia.Text) <= 0)
                {
                    txtDonGia.Focus();
                    dxErrorProvider1.SetError(txtDonGia, "Đơn giá phải lớn hơn 0");
                    return false;
                }
            }
            else
            {
                txtDonGia.Focus();
                dxErrorProvider1.SetError(txtDonGia, "Vui lòng nhập đơn giá");
                return false;
            }

            if (txtSoLuong.Text != "")
            {
                if (Convert.ToInt32(txtSoLuong.Text) <= 0)
                {
                    txtSoLuong.Focus();
                    dxErrorProvider1.SetError(txtSoLuong, "Số lượng phải lớn hơn 0");
                    return false;
                }
            }
            else
            {
                txtSoLuong.Focus();
                dxErrorProvider1.SetError(txtSoLuong, "Vui lòng nhập số lượng");
                return false;
            }

            return true;
        }






        // sự kiện nhấn nút Chọn
        private void btChon_Click(object sender, EventArgs e)
        {
            if (this.validate_ChiTietNhap())
            {
                var doiTuong = (from dt in dc.DOI_TUONGs where dt.DT_ID == int.Parse(lueDoiTuong.EditValue.ToString()) select dt).Single();
                DataRow drNewRow = dtChiTietNhap.NewRow();
                drNewRow[0] = doiTuong.DT_ID;
                drNewRow[1] = doiTuong.DT_TEN;
                drNewRow[2] = Convert.ToUInt32(txtSoLuong.Text);
                drNewRow[3] = Convert.ToDecimal(txtDonGia.Text);
                dtChiTietNhap.Rows.Add(drNewRow);

                gcChiTietNhap.DataSource = dtChiTietNhap;
            }
        }


        // sự kiện nhấn xóa chi tiết nhập kho
        private void btXoaChiTietPhieuNhap_Click(object sender, EventArgs e)
        {
            this.setTable_ChiTietNhap();
        }



    }
}